<?php

    if (! defined('SIMPLE_TEST')) {
        define('SIMPLE_TEST', '../simpletest/');
    }
    require_once(SIMPLE_TEST . 'autorun.php');

    include '../Include/Include.php';


class DBUsuarioDAOTest extends UnitTestCase {

    function DBUsuarioDAOTest() {
        $this->UnitTestCase();
    }

    public function testselect() {
        $miDBUsuarioDAOTest = new DBUsuarioDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $DBConn->consulta( "INSERT INTO usuario VALUES (-1, -1, 'Prueba Nombre',
                            'Prueba Apellido', 'Prueba Direccion', '0444-444-44-44',
                            'PruebaEmail@gmail.com', 'Prueba Clave', 'USER', 1);" );

        $usuario = $miDBUsuarioDAOTest->select( -1 );

        $this->assertEqual( -1 , $usuario->getId() );
        $this->assertEqual( -1 , $usuario->getCedula() );
        $this->assertEqual( 'Prueba Nombre' , $usuario->getNombre() );
        $this->assertEqual( 'Prueba Apellido' , $usuario->getApellido() );
        $this->assertEqual( 'Prueba Direccion' , $usuario->getDireccion() );
        $this->assertEqual( '0444-444-44-44' , $usuario->getTelefono() );
        $this->assertEqual( 'PruebaEmail@gmail.com' , $usuario->getEmail() );
        $this->assertEqual( 'Prueba Clave' , $usuario->getClave() );
        $this->assertEqual( 'USER' , $usuario->getPrivilegio() );

        $DBConn->consulta("DELETE FROM usuario
                          WHERE USR_ID = -1" );

    }

    public function testinsert() {
        $miDBUsuarioDAOTest = new DBUsuarioDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $usuario = new Usuario( -1, -1, 'Prueba Nombre',
                            'Prueba Apellido', 'Prueba Direccion', '0444-444-44-44',
                            'PruebaEmail@gmail.com', 'Prueba Clave', 'USER', 1);


        $miDBUsuarioDAOTest->insert($usuario);
        $usuarioSelect = $miDBUsuarioDAOTest->select( -1 );

        $this->assertEqual( $usuarioSelect->getId() , $usuario->getId() );
        $this->assertEqual( $usuarioSelect->getCedula() , $usuario->getCedula() );
        $this->assertEqual( $usuarioSelect->getNombre() , $usuario->getNombre() );
        $this->assertEqual( $usuarioSelect->getApellido() , $usuario->getApellido() );
        $this->assertEqual( $usuarioSelect->getDireccion() , $usuario->getDireccion() );
        $this->assertEqual( $usuarioSelect->getTelefono() , $usuario->getTelefono() );
        $this->assertEqual( $usuarioSelect->getEmail() , $usuario->getEmail() );
        $this->assertEqual( $usuarioSelect->getClave() , $usuario->getClave() );
        $this->assertEqual( $usuarioSelect->getPrivilegio() , $usuario->getPrivilegio() );

        $DBConn->consulta("DELETE FROM usuario
                          WHERE USR_ID = -1" );

    }

    public function testupdates() {
        $miDBUsuarioDAOTest = new DBUsuarioDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $usuario = new Usuario( -1, -1, 'Prueba Nombre',
                            'Prueba Apellido', 'Prueba Direccion', '0444-444-44-44',
                            'PruebaEmail@gmail.com', 'Prueba Clave', 'USER', 1);

        $miDBUsuarioDAOTest->insert($usuario);
        $usuarioUpdate = new Usuario( -1, -1, 'Prueba Nombre Update',
                            'Prueba Apellido Update', 'Prueba Direccion Update',
                            '0555-555-55-55','PruebaEmailUpdate@gmail.com',
                            'Prueba Clave Update', 'USER Update', 1);

        $miDBUsuarioDAOTest->update($usuarioUpdate);
        $usuarioSelect = $miDBUsuarioDAOTest->select( -1 );

        $this->assertEqual( $usuarioUpdate->getId() , $usuarioSelect->getId() );
        $this->assertEqual( $usuarioUpdate->getCedula() , $usuarioSelect->getCedula() );
        $this->assertEqual( $usuarioUpdate->getNombre() , $usuarioSelect->getNombre() );
        $this->assertEqual( $usuarioUpdate->getApellido() , $usuarioSelect->getApellido() );
        $this->assertEqual( $usuarioUpdate->getDireccion() , $usuarioSelect->getDireccion() );
        $this->assertEqual( $usuarioUpdate->getTelefono() , $usuarioSelect->getTelefono() );
        $this->assertEqual( $usuarioUpdate->getEmail() , $usuarioSelect->getEmail() );
        $this->assertEqual( $usuarioUpdate->getClave() , $usuarioSelect->getClave() );
        $this->assertEqual( $usuarioUpdate->getPrivilegio() , $usuarioSelect->getPrivilegio() );
        
        $DBConn->consulta("DELETE FROM usuario
                          WHERE USR_ID = -1" );

    }

    public function testdelete() {
        $_SESSION['USR_ID'] = 2;
        $miDBUsuarioDAOTest = new DBUsuarioDAO();
        $DBConn = null;
        $conexion = new conexion();
        $DBConn = $conexion->setConnect();
        $usuario = new Usuario( -1, -1, 'Prueba Nombre',
                            'Prueba Apellido', 'Prueba Direccion', '0444-444-44-44',
                            'PruebaEmail@gmail.com', 'Prueba Clave', 'USER', 1);

        $miDBUsuarioDAOTest->insert($usuario);
        $DBConn->consulta( "SELECT * FROM usuario
                           WHERE USR_ID = -1
                           AND USR_STATUS = 1" );

        $fila = $DBConn->extraer_registro();
        $this->assertEqual( $fila['USR_STATUS'], 1 );
        $miDBUsuarioDAOTest->delete( -1 );
        $fila2 = $DBConn->extraer_registro();
        $this->assertEqual( $fila2['USR_STATUS'], 0 );

        $DBConn->consulta("DELETE FROM usuario
                          WHERE USR_ID = -1" );

    }

    public function testlistaProveedor() {
        $miDBUsuarioDAOTest = new DBUsuarioDAO();
        $listaUsuario = $miDBUsuarioDAOTest->listaUsuario();

        foreach ( $listaUsuario as $usuario ) {
            $this->assertIsA( $usuario, "Usuario" );

        }

    }


}

?>
